A robust Go binary for managing PocketBase instances on Linux with automated deployment, systemd service creation, Caddy reverse proxy configuration, and a comprehensive REST API for service management.
hljs βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β React UI ββββββ Go Binary ββββββ PocketBase β
β (Embedded) β β (Orchestrator) β β Instance β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β
βββββββββββββββββββββββΌββββββββββββββββββββββ
β β β
ββββββΌβββββ βββββββΌββββββ βββββββΌββββββ
β SystemD β β Caddy β β File β
βManager β β Manager β β System β
βββββββββββ βββββββββββββ βββββββββββββ
Create /etc/sudoers.d/pockestrator
:
# Allow pockestrator user to manage systemd services
pockestrator ALL=(ALL) NOPASSWD: /bin/systemctl, /usr/bin/systemctl
pockestrator ALL=(ALL) NOPASSWD: /bin/journalctl, /usr/bin/journalctl
pockestrator ALL=(ALL) NOPASSWD: /usr/bin/systemd-analyze
# Clone the repository
git clone <repository-url>
cd pockestrator
# Build the dashboard
cd dashboard
pnpm install
pnpm build
cd ..
# Build the Go binary
go build
# Run Pockestrator
./pockestrator serve --http="127.0.0.1:8091"
See API_DOCUMENTATION.md for comprehensive endpoint documentation.
GET /api/pockestrator/system/health
- System health checkGET /api/pockestrator/system/info
- System informationPOST /api/pockestrator/services
- Create new serviceGET /api/pockestrator/services
- List all servicesGET /api/pockestrator/services/{id}/status
- Get service statusGET /api/pockestrator/services/{id}/logs
- Get service logsPOST /api/pockestrator/services/{id}/control
- Control service (start/stop/restart)hljs pockestrator/
βββ main.go # Main application entry point
βββ dashboard/ # React dashboard (embedded)
β βββ src/ # Dashboard source code
β βββ dist/ # Built dashboard (embedded)
βββ internal/ # Internal packages
β βββ service/ # Service management
β βββ systemd/ # SystemD integration
β βββ caddy/ # Caddy configuration
β βββ validation/ # System validation
β βββ database/ # Database operations
βββ pkg/ # Public packages
β βββ orchestrator.go # Main orchestration logic
βββ test/ # Tests
internal/service/
): Handles PocketBase service lifecycleinternal/systemd/
): Manages systemd service files and operationsinternal/caddy/
): Manages Caddy reverse proxy configurationinternal/validation/
): Validates system requirements and configurationsinternal/database/
): Handles database operations and recordspkg/orchestrator.go
): Coordinates all operationscd dashboard
pnpm install
pnpm build # Creates dist/ folder that gets embedded
go test ./...
BaseDir: "/home/ubuntu" # Base directory for services
SystemdDir: "/lib/systemd/system" # SystemD service files location
CaddyConfig: "/etc/caddy/Caddyfile" # Caddy configuration file
DefaultDomain: "tigawanna.vip" # Default domain for services
POCKESTRATOR_BASE_DIR
: Override base directoryPOCKESTRATOR_SYSTEMD_DIR
: Override systemd directoryPOCKESTRATOR_CADDY_CONFIG
: Override Caddy config pathPOCKESTRATOR_DEFAULT_DOMAIN
: Override default domainIf you encounter permission errors:
GET /api/pockestrator/system/health
This project is licensed under the MIT License.
Built with β€οΈ for the PocketBase community